package personal.xjl._23java2studentdemo.controller;

import jakarta.servlet.http.Cookie;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.CacheControl;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import personal.xjl._23java2studentdemo.mapper.StudentMapper;
import personal.xjl._23java2studentdemo.model.Student;
import personal.xjl._23java2studentdemo.service.StudentService;

import java.util.ArrayList;
import java.util.List;

//相当于上学期的servlet
@Controller           //注解，定义下面的这个类是一个控制器,Servlet // 标识这是一个Spring MVC控制器
@RequestMapping("/Student")//请求映射，相当于过去的web.xml文件，<servlet></servlet>// 基础请求路径映射，所有方法URL前都会加上/Student
public class StudentController {

    @Autowired//spring框架的注解，自动装配，注入，使用studentService(/Mapper)对象// 自动注入StudentService依赖
    StudentService studentService;

    @RequestMapping("list")
   // @ResponseBody      //返回数据给用户
      public String list(Model model) {
        //调用StudentMapper的selectaAll，返回数据库student的数据/ 调用服务层获取所有学生数据
        List<Student> students = studentService.findAll();
        // 将学生列表添加到模型，供视图渲染
        model.addAttribute("students", students);
        // 返回Thymeleaf模板名称
        return "listStudents";

        //System.out.println("list");  //在控制台上打印list
        //return "list";               //跳转到/templates/list.html页面

    }

    //万能转向页面,可以转到任意页面,例子：转到login.html,/Student/toPage?page=login
    @RequestMapping("toPage")
    public String toPage(String page){
        return page;
    }

//    @RequestMapping("loginValidate")   //MVC,Model,View,Controller渲染
//    public String loginValidate(Student student, HttpServletRequest request, Model model, HttpSession session, HttpServletResponse response){
//
//        // 打印登录信息到控制台
//        System.out.println(student.getName()+" ,  "+student.getPassword()+" from "+request.getRemoteHost());
//        //将数据username,password存入model对象，准备渲染list.html页面
//        //model.addAttribute("username", username);
//        //model.addAttribute("password", password);
//
//        // 设置Cookie和Session
//        //服务器往客户端写一个cookie,它的名字是username,值是student.getUsername()
//        response.addCookie(new Cookie("username", student.getName()));
//        session.setAttribute("username", student.getName());
//        // 将学生信息添加到模型
//        model.addAttribute("student", student);
//
//        // 创建临时学生列表（示例数据）
//        //list类型的数据传递
//        List students = new ArrayList();
//        students.add(student);
//
//        //新建2个学生对象
//        //Student s1=new Student("tom","1");
//        //Student s2=new Student("jerry","2");
//        //students.add(s1);
//        //students.add(s2);
//
//        //将students传到下一个页面
//        model.addAttribute("students", students);
//        return "list";
//    }

//    @RequestMapping("loginValidate")
//    public String loginValidate(String username, String password, Model model, HttpSession session) {
//        //登录判断
//        if(studentService.login(username,password)) {
//            //增加一个session有效的变量（令牌），拦截器的通关检查
//            session.setAttribute("username", username);
//            return "redirect:/Student/list/1/3";
//        }
//        else
//            return "redirect:/Student/toPage?page=login";
//    }


    //删除学生
    @RequestMapping("remove")
    public String remove(int id){
        studentService.remove(id);// 调用服务层删除学生
        //重定向到List方法，刷新数据，重新select，返回给用户看
        return "redirect:/Student/list";// 重定向刷新列表
    }

    //新增学生
    @RequestMapping("add")
    public String add(Student student){
        //调用service的增加方法，返回到显示页面
        studentService.add(student); // 调用服务层添加学生
        return "redirect:/Student/list";
    }

    //修改
    @RequestMapping("edit")
    public String edit(Student student){
        studentService.edit(student);
        return "redirect:/Student/list";
    }
    @RequestMapping("toEdit")
    public String toEdit(int id, Model model){
        Student student=studentService.findOneById(id);
        model.addAttribute("student", student);
        return "editStudent";
    }

    //分页显示
    @RequestMapping("list/{currPage}/{pageSize}")
    public String list(Model model, @PathVariable("currPage") int currPage, @PathVariable("pageSize") int pageSize){
        if(currPage<1) currPage=1;
        if(pageSize<1) pageSize=5;
        List<Student> students = studentService.findByPage(currPage, pageSize);
        model.addAttribute("students", students);
        return "listStudents";
    }

//    @RequestMapping("login")
//    public String login(){
//        return "login";
//    }
//
//    @RequestMapping("logout")
//    public String logout(HttpSession session) {
//        // 清除 session 中的用户信息
//        session.removeAttribute("username");
//        // 重定向到登录页面
//        return "redirect:/Student/login";
//    }
}
